<?php
declare (strict_types = 1);

namespace app\adminapi\controller;

use think\Request;

/**
 * web攻击之XSS
 * 跨站脚步攻击、攻击通过输入恶意的script脚步、从而达到攻击目的
 *
 * Class Safe
 * @package app\adminapi\controller
 */
class Safe
{
    /**
     * 简单演示
     * 怎么防范xss攻击
     * 多级联动1.0 2.0
     * 体验xss攻击
     */
    public function xss(){
        // 转化的思想进行防范xss攻击、把script脚步转化为实体字符串
        $name = \request()->get('name');//针对某个变量进行转化
        # 使用内置函数进行转化
//        echo "未转化";
//        echo $name;
//        echo "转化后的";
//        echo htmlspecialchars($name);// 通过PHP内涵函数
//        echo "全局配置过滤规则"; //是在app/Request filter属性
//        echo $name;
        //针对某个变量进行转化
//        $name = \request()->get('name','','htmlspecialchars');

        // 过滤的思想进行防范xss攻击、把script脚步进行过滤
        // 相当于替换、过滤的原理
//        $name = str_replace('<script>','',$name);
//        echo $name;

        # 具体 需要借助扩展进行过滤 简单的体验
        # 安装插件 composer require ezyang/htmlpurifier

        $config = \HTMLPurifier_Config::createDefault();
        $config->set('HTML.Allowed','');
//        $config->set('HTML.Allowed','p,a[href],h1');
        $purifier = new \HTMLPurifier($config);
        $clean_html = $purifier->purify($name);

        echo $clean_html;

    }
}
